home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1998 July / EnigmA AMIGA RUN 29 (1998)(G.R. Edizioni)(IT)[!][issue 1998-07 & 08].iso / earkit / news / thor / rexx / cfghttp.thor < prev    next >
Text File  |  1998-05-24  |  9KB  |  363 lines

  1. /*
  2.   $VER: CfgHTTP.thor 0.2 (22.2.97)
  3.   by Remco van Hooff
  4.  
  5.   Configuration editor for http.thor
  6.   
  7.   History:
  8.   0.1 - First test release.
  9.   0.2 - Forgot to save the browserexe config.
  10.       - Removed some text that were letf in when using code from CfgGetNET.
  11. */
  12.  
  13. /*!~ "Variables" */
  14. version = SUBWORD(SOURCELINE(2), 3,1)
  15. cfgpath = 'env:thor/'
  16. cfgfile = 'http.config'
  17. change = 0
  18. title = 'CfgHTTP' version '© by Remco van Hooff'
  19. /*~!*/
  20.  
  21. /*!~ "Init" */
  22. OPTIONS RESULTS
  23. /*TRACE RESULTS*/
  24.  
  25. p=' '||ADDRESS()||' '||SHOW('P',,)
  26. IF POS(' THOR.',p)>0 THEN thorport=WORD(SUBSTR(p,POS(' THOR.',p)+1),1)
  27. ELSE DO
  28.   SAY 'THOR port not found!'
  29.   EXIT 10
  30. END
  31.  
  32. IF ~SHOW('p', 'BBSREAD') THEN DO
  33.   ADDRESS COMMAND
  34.     "run >nil: `GetEnv THOR/THORPath`bin/LoadBBSRead"
  35.     "WaitForPort BBSREAD"
  36. END
  37. /*~!*/
  38.  
  39. CALL loadprefs
  40. CALL cfgmain
  41.  
  42. EXIT
  43.  
  44. /*!~ "LoadPrefs" */
  45. loadprefs:
  46.   IF ~EXISTS(cfgpath||cfgfile) THEN DO
  47.     Address(thorport)
  48.     'Requestnotify TEXT "Could not find the configuration file.\nUsing the default settings." BT "_OK"'
  49.     Call checkprefs
  50.   END
  51.   ELSE DO
  52.     CALL OPEN(prf,cfgpath||cfgfile,'R')
  53.       DO UNTIL EOF(prf)
  54.         line = READLN(prf)
  55.         SELECT
  56.           WHEN UPPER(WORD(line,1)) = 'GETNET' THEN DO
  57.             getnet = SUBWORD(line,2)
  58.           END
  59.           WHEN UPPER(WORD(line,1)) = 'BROWSER' THEN DO
  60.             browser = WORD(line,2)
  61.           END
  62.           WHEN UPPER(WORD(line,1)) = 'BROWSEREXE' THEN DO
  63.             browserexe = SUBWORD(line,2)
  64.           END
  65.           WHEN UPPER(WORD(line,1)) = 'SAVE_URL' THEN DO
  66.             save_url = WORD(line,2)
  67.           END
  68.           WHEN UPPER(WORD(line,1)) = 'SAVEDELAY' THEN DO
  69.             savedelay = WORD(line,2)
  70.           END
  71.           WHEN UPPER(WORD(line,1)) = 'AWEB_TCP' THEN DO
  72.             aweb_tcp = WORD(line,2)
  73.           END
  74.           WHEN UPPER(WORD(line,1)) = 'TCP_IP' THEN DO
  75.             tcp_ip = SUBWORD(line,2)
  76.           END
  77.           OTHERWISE NOP
  78.         END
  79.       END
  80.     CALL CLOSE(prf)
  81.     CALL checkprefs
  82.   END
  83. RETURN
  84. /*~!*/
  85.  
  86. /*!~ "CheckPrefs" */
  87. checkprefs:
  88.   IF (SYMBOL('getnet') ~= 'VAR' | getnet = '') THEN DO
  89.     CALL OPEN(tmp, 'env:thor/thorpath')
  90.       thorpath = readln(tmp)
  91.     CALL CLOSE(tmp)
  92.     getnet = thorpath'rexx/getnet.thor'
  93.   END
  94.   IF ~DATATYPE(browser, 'NUM')   THEN browser = 4
  95.   IF (SYMBOL('browserexe') ~= 'VAR' | browserexe = '') THEN browserexe = 'voyager:v'
  96.   IF ~DATATYPE(save_url, 'BIN')  THEN save_url = 0
  97.   IF ~DATATYPE(savedelay, 'NUM') THEN savedelay = 5
  98.   IF ~DATATYPE(aweb_tcp, 'BIN')  THEN aweb_tcp = 0
  99.   IF (SYMBOL('tcp_ip') ~= 'VAR' | tcp_ip = '') THEN tcp_ip = 'RequestChoice >NIL: TITLE="HTTP.thor ERROR" BODY="No TCP/IP stack to run. Use CfgHTTP to edit." GADGETS="OK" Pubscreen=Thor.1'
  100. RETURN
  101. /*~!*/
  102.  
  103. /*!~ "SavePrefs" */
  104. saveprefs:
  105.   CALL OPEN(prf,cfgpath||cfgfile,'W')
  106.     CALL WRITELN(prf,'GETNET' getnet)
  107.     CALL WRITELN(prf,'BROWSER' browser)
  108.     CALL WRITELN(prf,'BROWSEREXE' browserexe)
  109.     CALL WRITELN(prf,'SAVE_URL' save_url)
  110.     CALL WRITELN(prf,'SAVEDELAY' savedelay)
  111.     CALL WRITELN(prf,'AWEB_TCP' aweb_tcp)
  112.     CALL WRITELN(prf,'TCP_IP' tcp_ip)
  113.   CALL CLOSE(prf)  
  114.   ADDRESS command 'Copy "'cfgpath||cfgfile'" "ENVARC:Thor/" QUIET'
  115. RETURN
  116. /*~!*/
  117.  
  118. /*!~ "CfgMain" */
  119. cfgmain:
  120.   SELECT
  121.     WHEN save_url = 0 THEN sv = 'No'
  122.     WHEN save_url = 1 THEN sv = 'Yes'
  123.     OTHERWISE sv = '?'
  124.   END
  125.  
  126.   SELECT
  127.     WHEN aweb_tcp = 0 THEN aw = 'No'
  128.     WHEN aweb_tcp = 1 THEN aw = 'Yes'
  129.     OTHERWISE aw = '?'
  130.   END
  131.  
  132.   SELECT
  133.     WHEN browser = '1' THEN br = 'IBrowse'
  134.     WHEN browser = '2' THEN br = 'AWeb'
  135.     WHEN browser = '3' THEN br = 'AMosaic'
  136.     WHEN browser = '4' THEN br = 'Voyager'
  137.     OTHERWISE br = '?'
  138.   END
  139.  
  140.   main.1 = 'GetNET path  :' getnet
  141.   main.2 = 'Browser name :' br
  142.   main.3 = 'Browser path :' browserexe
  143.   main.4 = 'TCP/IP start :' LEFT(tcp_ip,30)
  144.   main.5 = ''
  145.   main.6 = 'Save and exit'
  146.   main.count = 6
  147.  
  148.   SELECT
  149.     WHEN (browser = 1) THEN DO
  150.       main.5 = 'Save URL     :' sv
  151.       main.6 = 'Save delay   :' savedelay
  152.       main.7 = ''
  153.       main.8 = 'Save and exit'
  154.       main.count = 8
  155.     END
  156.     WHEN (browser = 2) THEN DO
  157.       IF aweb_tcp THEN DO
  158.         main.4 = 'AWeb TCP/IP  :' aw
  159.         main.5 = ''
  160.         main.6 = 'Save and exit'
  161.         main.count = 6
  162.       END
  163.       ELSE DO
  164.         main.4 = 'AWeb TCP/IP  :' aw
  165.         main.5 = 'TCP/IP start :' LEFT(tcp_ip,30)
  166.         main.6 = ''
  167.         main.7 = 'Save and exit'
  168.         main.count = 7
  169.       END
  170.     END
  171.     OTHERWISE NOP
  172.   END
  173.  
  174.   ADDRESS(thorport)
  175.   'REQUESTLIST INSTEM' main 'TITLE "'title'" SIZEGADGET'
  176.   IF (RC = 30) THEN DO
  177.     'REQUESTNOTIFY TEXT "'THOR.LASTERROR'" BT "_Ok"'
  178.     EXIT
  179.   END
  180.   IF RC = 5 THEN DO
  181.     IF change THEN DO
  182.       'REQUESTNOTIFY TEXT "Are you sure you want to\nexit without saving?" BT "_Yes|_No"'
  183.       IF RC = 0 THEN DO
  184.         IF RESULT = 1 THEN EXIT
  185.         IF RESULT = 0 THEN SIGNAL cfgmain
  186.       END
  187.     END
  188.   END
  189.   ELSE DO
  190.     selected = RESULT
  191.     SELECT
  192.       WHEN POS('GetNET path',selected) ~= 0 THEN DO
  193.         CALL request_file('Select the path to GetNET', getnet)
  194.         getnet = RESULT
  195.         SIGNAL cfgmain
  196.       END
  197.  
  198.       WHEN POS('Browser name', selected) ~= 0 THEN DO
  199.         CALL sel_browser
  200.         SIGNAL cfgmain
  201.       END
  202.  
  203.       WHEN Pos('Browser path', selected) ~= 0 THEN DO
  204.         CALL request_file('Select the path to your Browser', browserexe)
  205.         browserexe = RESULT
  206.         SIGNAL cfgmain
  207.       END
  208.  
  209.       WHEN Pos('TCP/IP start', selected) ~= 0 THEN DO
  210.         'REQUESTSTRING TITLE "'title'" BODY "Enter a command to start your\nTCP-IP stack." BT "_OK|_Cancel" MAXCHARS 256 ID "'addasterix(tcp_ip)'"'
  211.         IF (RC = 30) THEN DO
  212.           'REQUESTNOTIFY TEXT "'THOR.LASTERROR'" BT "_Ok"'
  213.           EXIT
  214.         END
  215.         IF RC = 5 THEN SIGNAL cfgmain
  216.         IF RC = 0 THEN DO
  217.           IF THORRC = 1 then tcp_ip = RESULT
  218.         END
  219.         SIGNAL cfgmain
  220.       END
  221.  
  222.       WHEN POS('Save URL', selected) ~= 0 THEN DO
  223.         save_url = askYN('Save the URL directly to the IBrowse hotlist?\n\nCurrently:' sv, save_url, '_Yes|_No')
  224.         SIGNAL cfgmain
  225.       END
  226.  
  227.       WHEN POS('Save delay', selected) ~= 0 THEN DO
  228.         savedelay = asknum('Enter the save delay', savedelay)
  229.         SIGNAL cfgmain
  230.       END
  231.  
  232.       WHEN POS('AWeb TCP/IP', selected) ~= 0 THEN DO
  233.         aweb_tcp = askYN('Use the built-in TCP/IP starting\nfeature of AWeb?\n\nCurrently:' aw, aweb_tcp, '_Yes|_No')
  234.         SIGNAL cfgmain
  235.       END
  236.  
  237.       WHEN selected = 'Save and exit' THEN DO
  238.         CALL saveprefs
  239.         EXIT
  240.       END
  241.       OTHERWISE CALL cfgmain
  242.     END
  243.   END
  244. RETURN
  245. /*~!*/
  246.  
  247. /*!~ "Select browser"*/
  248. sel_browser:
  249.   drop brow.
  250.  
  251.   brow.1 = 'AMosaic'
  252.   brow.2 = 'AWeb'
  253.   brow.3 = 'IBrowse'
  254.   brow.4 = 'Voyager'
  255.   brow.count = 4
  256.  
  257.   ADDRESS(thorport)
  258.   'REQUESTLIST INSTEM' brow 'TITLE "Select your browser." SIZEGADGET'
  259.   IF (RC = 30) THEN DO
  260.     'REQUESTNOTIFY TEXT "'THOR.LASTERROR'" BT "_Ok"'
  261.     EXIT
  262.   END
  263.   IF RC = 5 THEN RETURN
  264.   ELSE DO
  265.     brw = RESULT
  266.     SELECT
  267.       WHEN POS('AMOSAIC', UPPER(brw)) ~=0  THEN browser = 3
  268.       WHEN POS('AWEB', UPPER(brw)) ~=0     THEN browser = 2
  269.       WHEN POS('IBROWSE', UPPER(brw)) ~=0  THEN browser = 1
  270.       WHEN POS('VOYAGER', UPPER(brw)) ~=0  THEN browser = 4
  271.     END
  272.   END
  273. RETURN
  274. /*~!*/
  275.  
  276. /*!~ "Request_File" */
  277. request_file:
  278.   reqtitle = ARG(1)
  279.   dir = ARG(2)
  280.  
  281.   filepos = LastPos('/', dir)
  282.   IF filepos = 0 THEN filepos = LastPos(':', dir)
  283.   file = substr(dir,filepos+1)
  284.   filedir = substr(dir,1,filepos)
  285.  
  286.   'REQUESTFILE TITLE "'reqtitle'" ID "'filedir'" IF "'file'" FP'
  287.   IF (RC = 30) THEN DO
  288.     'REQUESTNOTIFY TEXT "'THOR.LASTERROR'" BT "_Ok"'
  289.     EXIT
  290.   END
  291.   IF RC = 5 THEN RETURN ARG(2)
  292.   IF RC = 0 THEN DO
  293.     dir2 = dir
  294.     dir = RESULT
  295.     IF dir2 ~= dir THEN change = 1
  296.   END
  297. RETURN dir
  298. /*~!*/
  299.  
  300. /*!~ "AskYN" */
  301. askYN:
  302.  reqtxt = ARG(1)
  303.  option = ARG(2)
  304.  buttons = ARG(3)
  305.  'REQUESTNOTIFY TEXT "'reqtxt'" BT "'buttons'"'
  306.   IF RC = 0 THEN DO
  307.     IF RESULT = 1 THEN DO
  308.       IF option = 0 THEN change = 1
  309.       option = 1
  310.     END
  311.     IF RESULT = 0 THEN DO
  312.       IF option = 1 THEN change = 1
  313.       option = 0
  314.     END
  315.   END
  316. RETURN(option)
  317. /*~!*/
  318.  
  319. /*!~ "AddAsterix" */
  320. /* From CfgSortMail.thor by Eirik Nicolai Synnes */
  321. addasterix:
  322.   str = ARG(1)
  323.  
  324.   IF str = '' THEN RETURN(str)
  325.  
  326.   lastfound = 0; found = INDEX(str, '*')
  327.   DO WHILE found > lastfound
  328.     secondpart = SUBSTR(str, found + LENGTH('*'))
  329.     firstpart = SUBSTR(str, 1, LENGTH(str) - LENGTH(SUBSTR(str, found)))
  330.     str = firstpart || '**' || secondpart
  331.     lastfound = found + LENGTH('**')
  332.     found = INDEX(str, '*', lastfound)
  333.   END
  334.  
  335.   lastfound = 0; found = INDEX(str, '"')
  336.   DO WHILE found > lastfound
  337.     secondpart = SUBSTR(str, found + LENGTH('"'))
  338.     firstpart = SUBSTR(str, 1, LENGTH(str) - LENGTH(SUBSTR(str, found)))
  339.     str = firstpart || '*"' || secondpart
  340.     lastfound = found + LENGTH('*"')
  341.     found = INDEX(str, '"', lastfound)
  342.   END
  343. RETURN(str)
  344. /*~!*/
  345.  
  346. /*!~ "Aksnum"*/
  347. asknum:
  348.   ADDRESS(thorport)
  349.   'REQUESTINTEGER MIN 0 MAX 60 INIT' ARG(2) 'TITLE "'ARG(1)'" BT "_Ok|_Cancel"'
  350.   IF (RC = 30) THEN DO
  351.     'REQUESTNOTIFY TEXT "'THOR.LASTERROR'" BT "_Ok"'
  352.     EXIT
  353.   END
  354.   IF RC = 5 THEN RETURN ARG(2)
  355.   IF RC = 0 THEN DO
  356.     num2 = num
  357.     num = RESULT
  358.     IF num2 ~= num THEN change = 1
  359.   END
  360. RETURN num
  361. /*~!*/
  362.  
  363.